import { ParamValueType } from '../dto/expression.ts';
import { ParamTypeEnum } from '../dto/enumeration.ts';
import { parseParamType } from '../util/expression.ts';

// /**
//  * 未知参数类型错误
//  */
// export class UnknownParamValueTypeError extends Error {
//   constructor(value: ParamValueType) {
//     super(
//       `未知参数类型，值：${value}, 类型：${parseParamType(value)}`,
//     );
//   }
// }

/**
 * 参数类型不匹配错误
 */
export class ParamTypeMismatchingError extends Error {
  constructor(key: string, type: ParamTypeEnum, value: ParamValueType) {
    super(
      `参数类型不匹配，键：${key}，值：${JSON.stringify(value)}，期望类型：${type}，实际类型：${
        parseParamType(value)
      }`,
    );
  }
}

/**
 * 结果类型不匹配错误
 */
export class ResultTypeMismatchingError extends Error {
  constructor(type: ParamTypeEnum, value: ParamValueType) {
    super(
      `结果类型不匹配，值：${JSON.stringify(value)}，期望类型：${type}，实际类型：${
        parseParamType(value)
      }`,
    );
  }
}
